import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

//第一个servlet项目，创建项目的过程
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        // Tomcat收到一个get请求，就会触发doGet方法，Tomcat自动调用，
        // req是TCP Socket中读出来的字符串，按照HTTP协议解析得到的对象。这个req对象里的属性是和http请求报文格式相对应的。
        // resp则是一个空的对象，程序员就需要在doGet,根据req，结合业务逻辑，构造出一个resp对象，resp是一个输出型参数,resp构造完成后，由调用者把结果写回到TCP Socket中，进行响应

        // 写到服务器控制台
        System.out.println("hello World!");
        // 写到浏览器：getWriter获取一个Writer对象,这个Writer属于resp，此时执行write()方法操作是对reap的body部分进行写入
        //          等resp整个构造完成了,Tomcat再把resp转成http报文格式，然后写入Socket中。所以write()并非直接写入网卡
        resp.setContentType("text/html; charset=utf-8");
        resp.getWriter().write("hello World!!!");
    }
}
